1 REM ********************************* 2 REM * * 3 REM * EPSON PLOTTER * 4 REM * * 5 REM * C-64 + EPSON RX 80 (F/T+) * 6 REM * (+ INTERFACE) * 7 REM * * 8 REM ********************************* 9 REM * * 10 REM* VOLKER RAUM * 11 REM* NOETHERSTRASSE 20A * 12 REM* 8520 ERLANGEN * 13 REM* 09131/65511 * 14 REM* * 15 REM********************************* 16 : 17 : 30 REM "[147] = SHIFT+CLR/HOME 32 [143] " = CURSOR DOWN 34 REM "[154] = C= + 7 36 [143] " = CTRL + 7 38 REM "[157] = CURSOR LEFT 40 [139][194](49152)[179][177]165[167][147]"PLOTTER MASCH",8,1:[143] LADEN DRUCKERAUSGABE 42 [151]53281,6 44 [158]49289 :[143] LOESCHEN DES AUSGABEPUFFERS 46 [156] 48 [153]"LOADCONT PLOTTER " 50 [153]" C-64 <-> RX-80 (F/T)" 52 [153]" EINE BEL. FUNKTION F(X) WIRD AUF" 54 [153]" DEM DRUCKER AUSGEDRUCKT." 56 [133]" F(X) = ";F$:[139]F$[178]""[167]74:[143] EINGABE DER FUNKTION 58 [153]"LOAD10000 DEFFNF(X)=";F$ 60 [153]"10010 F$="[199](34);F$;[199](34) 62 [153]"GOTO74 64 POKE631,19:POKE632,13:POKE633,13:POKE634,13:POKE198,4:END 66 REM 68 REM FUNKTION IN DEFFNF EINSETZEN UND F$ ZURUECKSETZEN 70 REM *** PROGRAMMIERTER DIREKTMODUS *** 72 REM 74 DIM SW(200):REM SCHARPARAMETER 76 GOSUB 10000:PRINT"[154]":REM DEFFNF AUSFUEHREN 78 PRINT"[147] F(X) = ";F$ 80 PRINT" ANGABE DES DEFINITIONSBEREICHES :" 82 INPUT" XA,XE : -5,5 [157][157][157][157][157][157][157][157][157][157][157][157][157]";XA,XE 83 IFXA>XE THENPRINT"[145][145]";:GOTO82 84 INPUT" YA,YE : -5,5 [157][157][157][157][157][157][157][157][157][157][157][157][157]";YA,YE 85 IFYA>YE THENPRINT"[145][145]";:GOTO84 86 REM DEFINITIONS UND WERTEBEREICH VON F(X) 88 PRINT" AUFLOESUNG Y-RICHTUNG :" 90 PRINT" 0) 480 EINZELPUNKTE" 92 PRINT" 1) 960 EINZELPUNKTE" 94 PRINT" 2) 960 EINZELPUNKTE DOPPELTE GESCH." 96 PRINT" 3) 1920 EINZELPUNKTE " 98 PRINT" 4) 640 EINZELPUNKTE " 100 PRINT" 5) 720 EINZELPUNKTE " 102 INPUT" AUFLOESUNG : 0[157][157][157]";A1 104 IF A1=0THENAF=480 106 IF A1=1THENAF=960 108 IF A1=2THENAF=960 110 IF A1=3THENAF=1920 112 IF A1=4THENAF=640 114 IF A1=5THENAF=720:A1=6 116 IFA1>5GOTO102 118 POKE2,A1 120 REM 122 REM AUFLOESUNG FUER DRUCKER EINGEBEN (Y-RICHTUNG) 124 REM UEBERGABE DIESER AUFLOESUNG AN DAS MASCH.PROG. 126 REM 128 PRINT"[147] F(X) = "F$ 130 PRINT" BREITE DER X-ACHSE AUF DEM DRUCKER" 132 PRINT" IN PUNKTEN" 134 INPUT" AUFLOESUNG : 480[157][157][157][157][157]";A2 135 A2=A2-1 136 REM ANGABE DER LAENGE DES AUSDRUCKS A2/8=ZEICHEN 138 INPUT"[147] IST F(X) EINE FUNKTIONENSCHAR N[157][157][157]";FS$ 140 IF FS$="N"THEN150 142 SC=1:PRINT 144 PRINT" A("SC")= ";:INPUT GF$ 146 IFGF$="ENDE"THEN150 148 SW(SC)=VAL(GF$):SC=SC+1:GOTO144 150 REM FALLS SCHAR,DANN ANGABE DER PARAMETER 152 DY=ABS(YE-YA)/AF:REM 1PUNKT=?X 154 DX=ABS(XE-XA)/A2:REM SCHRITTWEITE 156 REM EINHEITEN DER X-UND Y-ACHSE 158 LX=(-YA*AF/(YE-YA)) 160 LY=INT((-XA*A2/(XE-XA))+.5)+1 162 IFLX<0ORLX>480 THENLX=-1 164 IFLY<0ORLY>480 THENLY=-1 166 IFLX=-1THEN172 168 REM FESTLEGUNG DER LAGE DER ACHSEN 170 FORI=LYTO1STEP-30:OF=I:NEXT:REM BEGINN DER SKALENEINTEILUNG 172 REM START DES PLOTTENS 174 REM ****************** 176 OPEN1,4:PRINT#1,CHR$(27);"3";CHR$(20); 178 PRINT#1,"F(X)="F$:PRINT#1 180 PRINT#1,"DX="30*DX" DY="30*DY:PRINT#1 182 PRINT#1,"XA,XE = ("XA","XE")":PRINT#1 184 PRINT#1,"YA,YE = ("YA","YE")":PRINT#1 186 IFFS$="J"THENPRINT#1,"A = ("SW(1); 188 IFFS$="J"THENFORI=2TOSC-1:PRINT#1,","SW(I);:NEXT:PRINT#1,")" 190 REM AUSDRUCK DER FUNKTION,DEFINITIONS,WERTEBEREICH,EINHEITEN DER X,Y ACHSE 192 REM GEGEBENFALLS SCHARPARAMETER 194 CMD1:REM AUSGABE KOMPLETT AUF DRUCKER,NOTWENDIG FUER MASCH.PROG. 196 BY=0:KU=-1:CO=XA-DX:FORI=1TOA2STEP8:BI=256:REM BEGIN DER PLOTSVCHLEIFE 198 IFFS$="J"THENFORAQ=1TOSC-1:REM FALLS SCHAR DANN ALLE PARAMETER 200 FORU=ITOI+7:CO=CO+DX:BI=BI/2:REM SCHRITTE ZU 8 FUER AUSDRUCK AUF DRUCKER 202 IFFS$="J"THENA=SW(AQ):REM SCHARPARAMETER 204 POKE768,112:POKE769,168:YI=FNF(CO):REM AUSSCHALTEN DER FEHLERMELDUNG 206 REM UND BESTIMMUNG DES FUNKTIONSWERTES 208 RY=INT(((YI-YA)*(AF-1)/(YE-YA))+.5):REM UMRECHNEN DES FUNKTIONSWERTES 210 POKE768,139:POKE769,227:REM FEHLERMELDUNG FREI GEBEN 212 IFRY<0ORRY>AFTHEN216:REM FUNKTIONSPUNKT EINZEICHNEN ? 214 POKERY+49920,PEEK(49920+RY)ORBI:REM PUNKT AN AUSGABEPUFFER GEBEN 216 IFKU>=0THENKU=KU+1:REM ZAEHLER FUER EINTEILUNG DER X-ACHSE 218 IFU=LYTHENBY=BI 220 IFU=OFTHENKU=0 222 IF(KU/30)=INT(KU/30)THENVR=1:PO=BI:REM SKALENEINTEILUNG ? 224 NEXTU:IFFS$="J"THENKU=KU-8:CO=CO-8*DX:BI=256:NEXTAQ:CO=CO+8*DX:KU=KU+8 226 REM 8PUNKTE FERTIG MACHEN,DANN EV. ALLE SCHARPARAMETER DURCHLAUFEN LASSEN 228 IFLX=-1THENSYS49152:NEXTI:GOTO240:REM AUSGABE AUF DRUCKER 230 POKE49920+LX,255:REM X-ACHSE SETZEN 232 IFVR=1THENFORQ=-1TO1:POKE49920+LX+Q,PEEK(49920+LX+Q)ORPO:NEXT:VR=0 234 REM SKALENEINTEILUNG 236 IFBY<>0THENGOSUB244:REM Y-ACHSE AUSGEBEN 238 SYS49152:NEXTI:REM DRUCKEN 240 PRINT#1:CLOSE1:REM KANAL SCHLIESSEN 242 GOTO46:REM NEUE FUNKTION 244 REM 246 FORV=49920TO49920+AF:POKEV,(PEEK(V) OR BY):NEXTV 248 IFLX=-1THENRETURN 250 B1=BY/2:IFB1<1THENB1=0 252 B2=BY/4:IFB2<1THENB2=0 254 B3=BY*2:IFB3>128THENB3=0 256 B4=BY*4:IFB4>128THENB4=0 258 AG=B1+B2+B3+B4 260 FORZX=0TO(AF-LX)STEP30:POKE49920+LX+ZX,PEEK(49920+LX+ZX)ORAG:NEXT 262 FORZX=0TOLXSTEP30:POKE49920+LX-ZX,PEEK(49920+LX-ZX)ORAG:NEXT 264 BY=0:RETURN 266 REM Y-ACHSE AUSGEBEN UND SKALENEINTEILUNG VORNEHMEN 10000 DEFFNF(X)=X 10010 F$="X" 10020 RETURN